package com.wu.flandre.util;

import com.wu.flandre.component.GlobalConstant;
import com.wu.flandre.entity.common.ResponseTemp;

/**
 * ResponseUtil <br/>
 *
 * @author 50816 <br/>
 * @date 2019/12/11 23:19 <br/>
 */
public class ResponseUtil<T> {
    /**
     * 创建一个带信息和返回json的成功响应
     *
     * @param msg
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ResponseTemp<T> success(String msg, T data) {
        return new ResponseTemp<T>().setCode(GlobalConstant.SUCCESS_CODE).setMsg(msg).setData(data);
    }

    /**
     * 创建一个只带信息的成功响应
     *
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ResponseTemp<T> success(T data) {
        return new ResponseTemp<T>().setCode(GlobalConstant.SUCCESS_CODE).setMsg(GlobalConstant.DEFAULT_JSON_MSG_RETURN).setData(data);
    }

    /**
     * 创建一个成功的响应
     *
     * @param <T>
     * @return
     */
    public static <T> ResponseTemp<T> success() {
        return new ResponseTemp<T>().setCode(GlobalConstant.SUCCESS_CODE).setMsg(GlobalConstant.DEFAULT_JSON_MSG_RETURN).setData(null);
    }

    /**
     * 创建一个仅带信息的失败响应
     *
     * @param msg
     * @param <T>
     * @return
     */
    public static <T> ResponseTemp<T> fail(String msg) {
        return new ResponseTemp<T>().setCode(GlobalConstant.FAIL_CODE).setMsg(msg);
    }

    /**
     * 创建一个仅带信息的异常响应
     *
     * @param msg
     * @param <T>
     * @return
     */
    public static <T> ResponseTemp<T> exceptions(String msg) {
        return new ResponseTemp<T>().setCode(GlobalConstant.EXCEPTION_CODE).setMsg(msg);
    }

    public static <T> ResponseTemp<T> unauthorized(String msg) {
        return new ResponseTemp<T>().setCode(GlobalConstant.UNAUTHORIZED).setMsg(msg);
    }

    /**
     * 创建一个自定义响应
     *
     * @param code
     * @param msg
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ResponseTemp<T> make(Integer code, String msg, T data) {
        return new ResponseTemp<T>().setCode(code).setMsg(msg).setData(data);
    }
}
